A wide variety of memory devices can be used to maintain and store data and instructions for various computers and similar systems. In particular, non-volatile (e.g., flash) memory is a type of electronic memory media that can be rewritten and that can retain content without consumption of power. Unlike dynamic random access memory (DRAM) devices and static random memory (SRAM) devices in which a single byte can be erased, flash memory devices are typically erased in fixed multi-bit blocks or sectors. Flash memory technology can include NOR flash memory and NAND flash memory, for example. NOR flash memory evolved from electrically erasable read only memory (EEPROM) chip technology, in which, unlike flash memory, a single byte can be erased; and NAND flash memory evolved from DRAM technology. Flash memory devices typically are less expensive and denser as compared to many other memory devices, meaning that flash memory devices can store more data per unit area.
Flash memory has become popular, at least in part, because it combines the advantages of the high density and low cost of EPROM with the electrical erasability of EEPROM. Flash memory is nonvolatile; it can be rewritten and can hold its content without power. The physical structure is more robust against shock than volatile memory and has gained popularity in portable devices. It can be used in many portable electronic products, such as cell phones, portable computers, voice recorders, thumbnail drives and the like, as well as in many larger electronic systems, such as cars, planes, industrial control systems, etc. The fact that flash memory can be rewritten, as well as its retention of data without a power source, small size, and light weight, have all combined to make memory devices, that utilize in part flash memory, useful and popular means for transporting and maintaining data.
Typically, data can be stored in a physical memory location (e.g., physical block address (PBA)) in a memory device (which can be among a plurality of memory devices in a system). A logical block address (LBA) can be associated with the data and its corresponding PBA to facilitate retrieval of the data from the memory by a host. When the host requests data from or desires to write data to a particular LBA, the PBA in the appropriate memory device can be accessed through a translation of the provided LBA. This translation conventionally can be in the form of an address translation table or translation lookaside buffer (e.g., cache dedicated to address translations) that can be used to store translations of LBAs and PBAs. The table can be maintained in the host or in the individual memory device.
It can be advantageous to have the LBA associated with the data remain the same even while the PBA where the data is stored changes. For example, a block of memory containing the PBA can have antiquated data in other memory locations in the block. The block of memory can be erased to reclaim the block, and valid data stored in the block, including the data in the PBA, can be moved to new physical locations in the memory. Furthermore, as non-volatile memory can have a limited life span (e.g., an upper limit of times the memory can be accessed, read, written or erased), performance and reliability can become concerns with memory systems (e.g., flash memory systems). Techniques have evolved in order to preserve device memory. Conventionally, one technique is known as wear leveling. Data can be physically moved during wear leveling, for example.
In any system involving data storage in non-volatile memory systems, it can be desired to maintain the correspondence of the LBA and the PBA. As data can be relocated physically in a memory device (or in the case of a multi-device system, between memory devices), means to link the LBA and the appropriate corresponding PBA can be undertaken. Any such means can involve a unique combination of a specified number of translation attributes. Determination of these translation attributes can be achieved in part with the information associated with the LBA, which can be in a known location of the non-volatile memory system(s). The attributes can include 1) which device has the LBA and/or associated data (in multi-device systems); 2) which erase block in the device has the LBA and/or associated data, 3) which page in the erase block has the LBA and/or associated data and 4) which data block in the page has the LBA and/or associated data. Techniques such as performing searches of the memory, table look-ups, and/or calculations can be employed to determine the translation attributes to perform a LBA to PBA translation. Conventional determination of PBA (e.g., translation of LBA) can be cumbersome, as each process can entail some limitations, and obtaining all four attributes for a single translation conventionally utilizes the same process.
Each of the conventional translation processes can suffer from limitations. Limitations of table look-ups can generally fall into the category of memory allocation size of the look-up tables. Limitations of calculations can fall into the category of unrestricted data movement. Limitations of searches can fall into the general category of time desired to search the entire data array.